/*
 * 文件名： InfoTypeTag.java
 * 
 * 创建日期： 2016年11月23日
 *
 * Copyright(C) 2016, by <a href="mailto:liws@xingyuanauto.com">liws</a>.
 *
 * 原始作者: liws
 *
 */
package com.moli.iov.protocol.enums;


/**
 * 车联网通信协议 实时上报数据  信息类型标志
 *
 * @author <a href="mailto:liws@xingyuanauto.com">liws</a>
 *
 * @version $Revision$
 *
 * @since 2016年11月23日
 */
public enum RealTimeInfoTypeTag implements IDictsEnumTag {
	/**
	 * 整车数据
	 */
	VEHICLE_DATA("整车数据", (byte) 0x01), 
	/**
	 * 驱动电机数据
	 */
	DRIVE_MOTOR_DATA("驱动电机数据", (byte) 0x02), 
	/**
	 * 燃料电池数据
	 */
	FUEL_BATTERY_DATA("燃料电池数据",
			(byte) 0x03), 
	/**
	 * 发动机数据
	 */
	ENGINE_DATA("发动机数据", (byte) 0x04), 
	/**
	 * 车辆位置数据
	 */
	VEHICLE_LOCATION_DATA("车辆位置数据",
					(byte) 0x05), 
	/**
	 * 极值数据
	 */
	LIMIT_VALUE_DATA("极值数据", (byte) 0x06), 
	/**
	 * 告警数据
	 */
	ALARM_DATA("告警数据", (byte) 0x07),
	/**
	 * 可充电储能装置电压数据
	 */
	CHARGE_VOLTAGE_DATA("可充电储能装置电压数据", (byte) 0x08),
	/**
	 * 可充电储能装置温度数据
	 */
	CHARGE_TEMPERATURE_DATA("可充电储能装置温度数据", (byte) 0x09),
//	/**
//	 * 剩余里程数据
//	 */
//	REMAINING_MILEAGE_DATA("剩余里程数据", (byte) 0x80),
//	/**
//	 * GPS扩展消息数据
//	 */
//	GPS_EXTEND_DATA("GPS扩展消息数据", (byte) 0x81),
	
	EXTEND_DATA("扩展数据", (byte) 0xA0);
	

	private RealTimeInfoTypeTag(String key, byte value) {
		this.k = key;
		this.v = value;
	}

	private String k;

	private byte v;

	public static RealTimeInfoTypeTag valOf(byte value) {
		switch (value) {
		case 0x01:
			return VEHICLE_DATA;
		case 0x02:
			return DRIVE_MOTOR_DATA;
		case 0x03:
			return FUEL_BATTERY_DATA;
		case 0x04:
			return ENGINE_DATA;
		case 0x05:
			return VEHICLE_LOCATION_DATA;
		case 0x06:
			return LIMIT_VALUE_DATA;
		case 0x07:
			return ALARM_DATA;
		case 0x08:
			return CHARGE_VOLTAGE_DATA;
		case 0x09:
			return CHARGE_TEMPERATURE_DATA;
//		case (byte)0x80:
//			return REMAINING_MILEAGE_DATA;
//		case (byte)0x81:
//			return GPS_EXTEND_DATA;
		case (byte)0xA0:
			return EXTEND_DATA;
		default:
			return null;
		}
	}
	
	public RealTimeInfoTypeTag valueOf(byte value) {
		switch (value) {
		case 0x01:
			return VEHICLE_DATA;
		case 0x02:
			return DRIVE_MOTOR_DATA;
		case 0x03:
			return FUEL_BATTERY_DATA;
		case 0x04:
			return ENGINE_DATA;
		case 0x05:
			return VEHICLE_LOCATION_DATA;
		case 0x06:
			return LIMIT_VALUE_DATA;
		case 0x07:
			return ALARM_DATA;
		case 0x08:
			return CHARGE_VOLTAGE_DATA;
		case 0x09:
			return CHARGE_TEMPERATURE_DATA;
		case (byte)0xA0:
			return EXTEND_DATA;
//		case (byte)0x80:
//			return REMAINING_MILEAGE_DATA;
//		case (byte)0x81:
//			return GPS_EXTEND_DATA;
		default:
			return null;
		}
	}

	public static String getKey(byte value) {
		for (RealTimeInfoTypeTag c : RealTimeInfoTypeTag.values()) {
			if (c.getV() == value) {
				return c.k;
			}
		}
		return null;
	}

	@Override
	public String getK() {
		return k;
	}

	@Override
	public byte getV() {
		return v;
	}
}
